package com.ly.heart.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ly.common.core.domain.AjaxResult;
import com.ly.heart.domain.OrderEntity;
import com.ly.heart.domain.dto.ContractOrderMaterialDetailDto;
import com.ly.heart.domain.dto.OrderQueryDto;
import com.ly.heart.domain.vo.select.query.OrderSelectQueryDto;

/**
 * 采购订单/销售订单管理Service接口
 * @author cxl
 * @date 2024-05-14
 */
public interface IOrderService extends IService<OrderEntity> {

    /**
     * 采购订单列表（以物料为主），带分页
     * @param queryDto
     * @return
     */
    AjaxResult getOrderPageListByMaterial(OrderQueryDto queryDto);

    /**
     * 采购订单新变更单列表，带分页
     * @param queryDto
     * @return
     */
    AjaxResult getOrderChangeListByMaterial(OrderQueryDto queryDto);

    /**
     * 暂存采购订单
     * @param order
     * @return
     */
    AjaxResult draft(OrderEntity order);

    /**
     * 提交采购订单并启动流程
     * @param order
     * @return
     */
    AjaxResult submit(OrderEntity order);

    /**
     * 修改采购订单,纯修改
     * @param order
     * @return
     */
    AjaxResult update(OrderEntity order);

    /**
     * 修改采购订单,生成采购订单变更单
     * @param
     * @return
     */
    AjaxResult updateOrder (OrderEntity order);

    /**
     * 查询采购订单/销售订单管理
     * @param id 采购订单/销售订单管理主键
     * @return 采购订单/销售订单管理
     */
    OrderEntity selectOrderEntityById (String id);

    /**
     * 根据id获取详情
     * @param id
     * @return
     */
    AjaxResult getOrderById (String id);

    /**
     * 根据采购合同对象List查询物料明细
     * @return
     */
    AjaxResult queryMaterial (ContractOrderMaterialDetailDto contractOrderMaterialDetailDto);

    /**
     * 删除
     * @param ids
     * @return
     */
    AjaxResult removeOrderByIds(String[] ids);

    /**
     * 新增接口，供其他方法调用
     * @param order
     * @return
     */
    AjaxResult saveOrder(OrderEntity order);

    /**
     * 采购订单选单接口
     * @param queryDto
     * @return
     */
    AjaxResult getOrderSelect(OrderSelectQueryDto queryDto);

}
